html,
body {
  height: 100%;
}

*:focus {
  outline: none;
}

.skeleton-box {
  background-color: hsl(var(--border));
  color: hsl(var(--border)) !important;
  user-select: none !important;
  cursor: default !important;
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
  border-color: transparent !important;
}

.skeleton-circle {
  background-color: hsl(var(--border));
  border-radius: 1000px !important;
  color: hsl(var(--border)) !important;
  user-select: none !important;
  cursor: default !important;
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
  border-color: transparent !important;
}

.skeleton-circle > *,
.skeleton-box > *,
.skeleton-line > * {
  opacity: 0 !important;
}

.pin-field-container {
  display: grid;
  grid-auto-columns: max-content;
  grid-auto-flow: column;
  justify-content: center;
  margin: 4rem 0;
}

.pin-field {
  border: 1px solid hsl(var(--border));
  background-color: hsl(var(--accent));
  border-right: none;
  font-size: 2rem;
  height: 4rem;
  outline: none;
  text-align: center;
  transition-duration: 250ms;
  transition-property: color, border, box-shadow, transform;
  width: 4rem;
}

.pin-field:last-of-type {
  border-radius: 0 0.5rem 0.5rem 0;
  border-right: 1px solid hsl(var(--border));
}

.pin-field:focus {
  box-shadow: "0 0 0.25rem rgba(white, 0.5)";
  opacity: 0.9;
  outline: none;
}

.invalid {
  animation: shake 0.2s ease-in-out 0s 2;
}

.pin-field:first-of-type {
  border-radius: 0.5rem 0 0 0.5rem;
}

.pin-field[disabled] {
  cursor: not-allowed;
  opacity: 0.5;
}

@keyframes shake {
  0% {
    transform: translateX(0rem);
  }
  25% {
    transform: translateX(0.5rem);
  }
  75% {
    transform: translateX(-0.5rem);
  }
  100% {
    transform: translateX(0rem);
  }
}

/* Desktop App */
html.desktop {
  background: transparent !important;
  user-select: none;
  -webkit-user-select: none;
  overscroll-behavior: none !important;
  border-radius: 10px;
  overflow: hidden;
  height: 100vh;
  width: 100vw;
  position: fixed;
  top: 0;
  left: 0;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
}

html.desktop body {
  position: relative;
  background: hsl(var(--background)) !important;
  overscroll-behavior: none !important;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  height: 100vh;
  width: 100%;
  overflow: auto;
}

html.desktop body::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0.5px solid rgba(0, 0, 0, 0.15);
  border-radius: 10px;
  z-index: 100;
  pointer-events: none;
}

html.desktop.dark body::before {
  border: 0.5px solid rgba(255, 255, 255, 0.15);
}

html.desktop .wrapper::-webkit-scrollbar,
html.desktop::-webkit-scrollbar,
html.desktop body::-webkit-scrollbar {
  display: none; /* Chrome, Safari, Opera */
}

.desktop div,
.desktop a,
.desktop button {
  cursor: default !important;
}

.color-picker .react-colorful {
  height: 240px;
}
.color-picker .react-colorful__saturation {
  border-radius: 4px 4px 0 0;
}
.color-picker .react-colorful__hue {
  height: 40px;
  border-radius: 0 0 4px 4px;
}

.color-picker .react-colorful__hue-pointer {
  width: 8px;
  height: inherit;
}

.color-picker .react-colorful__pointer {
  width: 15px;
  height: 15px;
}

.color-picker .react-colorful__hue {
  height: 20px;
}

.remove-arrow::-webkit-inner-spin-button,
.remove-arrow::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.remove-arrow {
  appearance: textfield;
}

input[type="time"]::-webkit-clear-button {
  display: none;
}

input[type="time"]::-webkit-calendar-picker-indicator {
  display: none;
}

.invoice-editor,
.invoice-editor div[aria-expanded="false"],
.invoice-editor .ProseMirror,
.invoice-editor .is-empty {
  height: 100%;
}

.ProseMirror-focused p.is-editor-empty:first-child::before {
  content: attr(data-placeholder);
  float: left;
  color: #434343;
  pointer-events: none;
  height: 0;
}

.tiptap {
  font-size: 11px !important;
  line-height: 18px !important;
}

.dark .dotted-bg {
  background-image: radial-gradient(
    circle at 1px 1px,
    #232323 0.5px,
    transparent 0
  );
  background-size: 6px 6px;
}

.light .dotted-bg {
  background-size: 6px 6px;
  background-image: radial-gradient(
    circle at 1px 1px,
    #e0e0e0 0.5px,
    transparent 0
  );
}

.global-search-list {
  height: min(450px, var(--search-list-height));
  overscroll-behavior: contain;
  transition: 100ms ease;
  transition-property: height;
}

.desktop-search .global-search-list {
  height: 450px;
}

.desktop-search .search-container {
  border: none;
  border-bottom: 0.5px solid hsl(var(--border));
}

.desktop-search .search-footer {
  border-left: 0px;
  border-right: 0px;
  border-bottom: 0px;
  border-top: 1px;
}

/* Wiggle Animations for Customize Mode - Faster & Smaller Movements */
@keyframes wiggle1 {
  0%,
  100% {
    transform: rotate(0deg);
  }
  20% {
    transform: rotate(0.6deg);
  }
  40% {
    transform: rotate(-0.4deg);
  }
  60% {
    transform: rotate(0.7deg);
  }
  80% {
    transform: rotate(-0.5deg);
  }
}

@keyframes wiggle2 {
  0%,
  100% {
    transform: rotate(0deg);
  }
  15% {
    transform: rotate(-0.6deg);
  }
  35% {
    transform: rotate(0.5deg);
  }
  55% {
    transform: rotate(-0.4deg);
  }
  75% {
    transform: rotate(0.7deg);
  }
}

@keyframes wiggle3 {
  0%,
  100% {
    transform: rotate(0deg);
  }
  25% {
    transform: rotate(0.4deg);
  }
  45% {
    transform: rotate(-0.6deg);
  }
  65% {
    transform: rotate(0.6deg);
  }
  85% {
    transform: rotate(-0.3deg);
  }
}

@keyframes wiggle4 {
  0%,
  100% {
    transform: rotate(0deg);
  }
  18% {
    transform: rotate(0.7deg);
  }
  38% {
    transform: rotate(-0.5deg);
  }
  58% {
    transform: rotate(0.4deg);
  }
  78% {
    transform: rotate(-0.6deg);
  }
}

@keyframes wiggle5 {
  0%,
  100% {
    transform: rotate(0deg);
  }
  22% {
    transform: rotate(-0.5deg);
  }
  42% {
    transform: rotate(0.6deg);
  }
  62% {
    transform: rotate(-0.7deg);
  }
  82% {
    transform: rotate(0.5deg);
  }
}

@keyframes wiggle6 {
  0%,
  100% {
    transform: rotate(0deg);
  }
  28% {
    transform: rotate(0.5deg);
  }
  48% {
    transform: rotate(-0.4deg);
  }
  68% {
    transform: rotate(0.6deg);
  }
  88% {
    transform: rotate(-0.7deg);
  }
}

@keyframes wiggle7 {
  0%,
  100% {
    transform: rotate(0deg);
  }
  16% {
    transform: rotate(-0.6deg);
  }
  36% {
    transform: rotate(0.7deg);
  }
  56% {
    transform: rotate(-0.4deg);
  }
  76% {
    transform: rotate(0.5deg);
  }
}

.wiggle-1 {
  animation: wiggle1 1.2s linear infinite;
}
.wiggle-2 {
  animation: wiggle2 1.3s linear infinite;
}
.wiggle-3 {
  animation: wiggle3 1.1s linear infinite;
}
.wiggle-4 {
  animation: wiggle4 1.25s linear infinite;
}
.wiggle-5 {
  animation: wiggle5 1.35s linear infinite;
}
.wiggle-6 {
  animation: wiggle6 1.15s linear infinite;
}
.wiggle-7 {
  animation: wiggle7 1.4s linear infinite;
}

/* Chat input positioning for small viewport heights on homepage */
@media (max-height: 860px) {
  .chat-input-wrapper-static {
    position: relative !important;
    bottom: auto !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    margin-top: auto;
    margin-bottom: 0;
  }

  .chat-input-static {
    position: relative !important;
    bottom: auto !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    margin-top: 1.5rem;
    margin-bottom: 1.5rem;
  }

  .widgets-container-spacing {
    padding-bottom: 0px;
  }

  /* Allow scrolling when chat input is not fixed */
  .chat-interface-container-scrollable {
    overflow-y: auto !important;
    overflow-x: hidden !important;
    height: auto !important;
    min-height: calc(100vh - 764px);
  }
}

/* Chart selection overlay - exclude labels from background effect */
/* Ensure chart axis labels are not affected by the overlay */
.recharts-wrapper .recharts-xAxis .recharts-cartesian-axis-tick text,
.recharts-wrapper .recharts-yAxis .recharts-cartesian-axis-tick text {
  position: relative;
  z-index: 10 !important;
  user-select: none !important;
  pointer-events: none !important;
  isolation: isolate;
}

/* Ensure the overlay doesn't affect labels */
.chart-selection-overlay {
  isolation: isolate;
}

/* Dark mode support for chart selection overlay */
.dark .chart-selection-overlay {
  background: rgba(255, 255, 255, 0.08) !important;
}

.dark .chart-selection-border {
  border-left-color: #999999 !important;
}
